#include "game.h"
//初始化棋盘
void INTboard(char board[ROW][COL],int row,int col)
{
    int i=0;
    int j=0;
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            board[i][j]=' ';
        }
    }
}
//打印棋盘 
//实际上还是打印二维数组
void displayboard(char board[ROW][COL],int row, int col)  
{
    int i=0;
    int j=0;
    //棋盘
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            printf(" %c ",board[i][j]);
            if(j<col-1)
                printf("|");
        }  
        printf("\n");  
        //分隔符
        if(i<row-1)
        {
            for(j=0;j<col;j++)
            {
                printf("---");
                if(j<col-1)
                    printf("|");
            }
        }
    printf("\n");
    }
}
//
//玩家下棋 用“*”表示玩家落子
//
void  playermove(char board[ROW][COL],int row,int col)
{
    int x=0;
    int y=0;
    printf("玩家一请下棋：\n");
    printf("请输入坐标--> ");
    while(1)
    {
        scanf("%d %d",&x,&y);
        //判断输入坐标是否合法
        if(x>ROW|| y>COL)
            printf("输入的坐标非法，请重新输入\n");
        if(x>0 && x<=ROW && y>0 && y<=COL  )
        {
            //合法情况下，判断这个位置有没有被占
            if(board[x-1][y-1]!=' ')
                printf("该位置已经下棋，请重新输入\n");
            else 
            {
             board[x-1][y-1]='*';
             break;
            }
        }
    }
}
//
//电脑下棋 电脑用“#”表示落子
//
void  computermove(char board[ROW][COL],int row,int col)
{
    printf("电脑下棋\n");
    int x=0;
    int y=0;
    //生成随机数 先调用srand()
    while(1)
    {
         x=rand()%ROW;//生成0-2的数字
        y=rand()%COL;
        if(board[x][y]==' ')
        {
            board[x][y]='#';
            break;
        }
    }
}
//
//判断输赢函数
//
char ISwin(char board[ROW][COL],int row,int col)
{
    //玩家赢 “p”
    //电脑赢 玩家二赢   “q”
    //平局   “e“
    int i=0; //行数 
    int j=0; //列数
    int judge=0;
    //列连三个
    for(j=0;j<col;j++)
    {
        if(board[0][j]==board[1][j] && board[1][j]==board[2][j] && board[0][j]=='*' ) 
                {return 'p';
                 judge=1;
                }
        else if(board[0][j]==board[1][j] && board[1][j]==board[2][j] && board[0][j]=='#')
                {return 'q';
                 judge=1;
                }
    }
    //行连三个
    for(i=0;i<row;i++)
    {
        if(board[i][0]==board[i][1] && board[i][0]==board[i][2] && board[i][0]=='*')
            {return 'p';
                judge=1;
            }
        else if(board[i][0]==board[i][1] && board[i][0]==board[i][2] && board[i][0]=='#')
              {return 'q';
                judge=1;
              }
    }

    //对角线
    if(board[0][0]==board[1][1] && board[0][0]==board[2][2] && board[0][0]=='*')
    {
        return 'p';
        judge=1;
    }
    else if(board[0][2]==board[1][1] && board[0][2]==board[2][0] && board[0][2]=='#')
    {
        return 'q';
        judge=1;
    }
    //平局 一定是棋盘满了
     //  判断是否下满了 满了变成 1 
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            if(board[i][j]!=' ') //是空格 说明没有下满
            judge++;
        }
    }
    if(judge==9)
        return 'e';
}

void playertwomove(char board[ROW][COL],int row,int col)
{
    int m=0;
    int n=0;
    printf("玩家二请下棋：\n");
    printf("请输入坐标--> ");
    while(1)
    {
        scanf("%d %d",&m,&n);
        //判断输入坐标是否合法
        if(m>ROW|| n>COL)
            printf("输入的坐标非法，请重新输入\n");
        if(m>0 && m<=ROW && n>0 && n<=COL )
        {
            //合法情况下，判断这个位置有没有被占
            if(board[m-1][n-1]!=' ')
                printf("该位置已经下棋，请重新输入\n");
            else 
            {
             board[m-1][n-1]='#';
             break;
            }
        }
    }
}

